package day9;

import sun.awt.windows.ThemeReader;

//通过synchronized 模拟多线程 轮流并发执行
//假设三个线程 A B C 要求顺序是ABC ABC ABC...
//1.可以使用逻辑判断控制流程 无需使用wait和notify
//缺点：会浪费很多循环次数 且代码冗余
//2.借助于它的wait和notify实现
public class Demo5 {
    int n=1;//1(A) 2(B) 3(C)
    //int id;//0(A) 1(B) 2(C) %3
    public synchronized void printA(){
        if(n==1){
            System.out.println(Thread.currentThread().getName());
            n=2;
        }
    }
    public synchronized void printB(){
        if(n==2){
            System.out.println(Thread.currentThread().getName());
            n=3;
        }
    }
    public synchronized void printC(){
        if(n==3){
            System.out.println(Thread.currentThread().getName());
            n=1;
        }
    }
    public static void main(String[] args) {
        Demo5 d=new Demo5();

       new Thread(()->{
          while (true) d.printA();
      },"A").start();
       new Thread(()->{
           while (true) d.printB();
       },"B").start();
       new Thread(()->{
           while (true) d.printC();
       },"C").start();
   }
}
